package language.basic;

import org.junit.Test;

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class NumberTest {

    @Test
    public void 数字类型() {
        //可以用前缀0b、0和0x分别表示二进制、八进制和十六进制，下划线来进行分割易读
        int n1 = 0x10; //16
        int n2 = 0b10; //2
        int n3 = 010; //8
        int n4 = 233_576_322;//233576322
    }

    public static String s;
    public static int a; //未赋值，默认值为0
    @Test
    public void 变量初始化() {
        //基本类型具有默认值，作为未赋值变量的初始值
        System.out.println(a);  //全局变量未赋值，值为默认值0
        System.out.println(s);  //全局变量未赋值，为null

        int [] Int = new int[2];
        System.out.println(Int[0]); //数组未赋值，值为默认值0

//        int b;
//        System.out.println(b);  //error,局部变量未赋值，不允许
    }

    @Test
    public void 位运算(){
        //位运算>>
        System.out.println(5>>1); // 正数右移，高位用0补，负数右移，高位用1补
        System.out.println(-5>>1);

        int a = -2147483648;
        System.out.println(a);
        //使用无符号右移>>>时，统一用0进行补位
        int b= 3 & 1; // 相当于 11 & 01  =  01 返回1
        System.out.println(b);
    }

    @Test
    public void chushihua() {
        //浮点数进行小数计算会有精度问题，不要使用浮点，使用BigDecimal
        System.out.println(1.03-0.42); //0.6100000000000001

        double pi = 345.1415927; //圆周率
        System.out.println(new DecimalFormat("00.000").format(pi));// 03.142  取两位整数和三位小数，整数不足部分以0填补。

        BigDecimal d = new BigDecimal(a).multiply(new BigDecimal(100)) ;

        System.out.println("a="+d);

        String b = BigDecimal.valueOf(2340).divide(new BigDecimal(100)).toString();
    }
}
